package com.demo.aidroid.util;

import com.demo.aidroid.bean.Book;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by kevinLiao on 2017/6/30.
 */

public class ModelUtil {

    public static String booksJson = "[{\"img\":0,\"name\":\"三国演义\",\"author\":\"罗贯中\",\"publishingHouse\":\"人民文学出版社\",\"publishTime\":\"9787020008728\",\"isbn\":\"9787020008728\",\"location\":\"书架B2第一排\",\"description\":\"《三国演义》描写了从东汉末年到西晋初年之间近105年的历史风云，以描写战争为主，诉说了东汉末年的群雄割据混战和汉、魏、吴三国之间的政治和军事斗争，最终司马炎一统三国，建立晋朝的故事。反映了三国时代各类社会斗争与矛盾的转化，并概括了这一时代的历史巨变，塑造了一批叱咤风云的三国英雄人物。\"},{\"img\":1,\"name\":\"钢铁是怎样炼成的\",\"author\":\"尼古拉·奥斯特洛夫斯基\",\"publishingHouse\":\"吉林大学出版社\",\"publishTime\":\"2015-07-01\",\"isbn\":\"9787560167213\",\"location\":\"书架A2第二排\",\"description\":\"《钢铁是怎样炼成的》是前苏联作家尼古拉·奥斯特洛夫斯基所著的一部长篇小说，于1933年写成。小说通过记叙保尔·柯察金的成长道路告诉人们，一个人只有在革命的艰难困苦中战胜敌人也战胜自己，只有在把自己的追求和祖国、人民的利益联系在一起的时候，才会创造出奇迹，才会成长为钢铁战士。\"},{\"img\":2,\"name\":\"汤姆叔叔的小屋\",\"author\":\"斯托夫人\",\"publishingHouse\":\"人民邮电出版社\",\"publishTime\":\"2013-09-01\",\"isbn\":\"9787115331823\",\"location\":\"书架C1第三排\",\"description\":\"《汤姆叔叔的小屋：卑贱者的生活》（英语：Uncle Tom's Cabin; or, Life Among the Lowly），又译作《黑奴吁天录》、《汤姆大伯的小屋》，是美国作家哈里特·比彻·斯托（斯托夫人）于1852年发表的一部反奴隶制小说。这部小说中关于非裔美国人与美国奴隶制度的观点曾产生过意义深远的影响，并在某种程度上激化了导致美国内战的地区局部冲突。\"},{\"img\":3,\"name\":\"小王子\",\"author\":\"[法]圣-埃克苏佩里\",\"publishingHouse\":\"辽宁少年儿童出版社\",\"publishTime\":\"2017-04-01\",\"isbn\":\"9787531569138\",\"location\":\"书架C2第二排\",\"description\":\"《小王子》是法国作家安托万·德·圣·埃克苏佩里于1942年写成的著名儿童文学短篇小说。本书的主人公是来自外星球的小王子。书中以一位飞行员作为故事叙述者，讲述了小王子从自己星球出发前往地球的过程中，所经历的各种历险。\"},{\"img\":4,\"name\":\"唐吉柯德\",\"author\":\"塞万提斯\",\"publishingHouse\":\"北方文艺出版社\",\"publishTime\":\"2016-04-29\",\"isbn\":\"9787544510981\",\"location\":\"书架B1第三排\",\"description\":\"故事发生时，骑士早已绝迹一个多世纪，但主角阿隆索·吉哈诺（唐·吉诃德原名）却因为沉迷于骑士小说，时常幻想自己是个中世纪骑士，进而自封为“唐·吉诃德·德·拉曼恰”（德·拉曼恰地区的守护者），拉着邻居桑丘·潘沙做自己的仆人，“行侠仗义”、游走天下，作出了种种与时代相悖、令人匪夷所思的行径，结果四处碰壁。但最终从梦幻中苏醒过来。\"},{\"img\":5,\"name\":\"鲁滨逊漂流记\",\"author\":\"[英]笛福\",\"publishingHouse\":\"译林出版社\",\"publishTime\":\"2009-08-01\",\"isbn\":\"9787544708968\",\"location\":\"书架A1第一排\",\"description\":\"该作主要讲述了主人公鲁滨逊·克鲁索（Robinson Crusoe）出生于一个中产阶级家庭，一生志在遨游四海。一次在去非洲航海的途中遇到风暴，只身漂流到一个无人的荒岛上，开始了段与世隔绝的生活。他凭着强韧的意志与不懈的努力，在荒岛上顽强地生存下来，经过28年2个月零19天后得以返回故乡。\"},{\"img\":6,\"name\":\"百年孤独\",\"author\":\"[哥伦]加西亚·马尔克斯\",\"publishingHouse\":\"南海出版公司\",\"publishTime\":\"2011-06-01\",\"isbn\":\"9787544253994\",\"location\":\"书架A3第二排\",\"description\":\"《百年孤独》，是哥伦比亚作家加西亚·马尔克斯的代表作，也是拉丁美洲魔幻现实主义文学的代表作，被誉为“再现拉丁美洲历史社会图景的鸿篇巨著”。作品描写了布恩迪亚家族七代人的传奇故事，以及加勒比海沿岸小镇马孔多的百年兴衰，反映了拉丁美洲一个世纪以来风云变幻的历史。\"},{\"img\":7,\"name\":\"追风筝的人\",\"author\":\"[美]卡勒德·胡赛尼\",\"publishingHouse\":\"上海人民出版社\",\"publishTime\":\"2016-05-01\",\"isbn\":\"9787208061644\",\"location\":\"书架C3第一排\",\"description\":\"《追风筝的人》是美籍阿富汗作家卡勒德·胡赛尼（Khaled Hosseini）的第一部小说，于2003年出版，是美国2005年的排名第三的畅销书。全书围绕风筝与阿富汗的两个少年之间展开，一个富家少年与家中仆人关于风筝的故事，关于人性的背叛与救赎。\"},{\"img\":8,\"name\":\"儒林外史\",\"author\":\"吴敬梓\",\"publishingHouse\":\"花山文艺出版社\",\"publishTime\":\"2015-07-01\",\"isbn\":\"9787551123426\",\"location\":\"书架C2第三排\",\"description\":\"。以写实主义描绘各类人士对于“功名富贵”的不同表现，一方面真实的揭示人性被腐蚀的过程和原因，从而对当时吏治的腐败、科举的弊端礼教的虚伪等进行了深刻的批判和嘲讽；一方面热情地歌颂了少数人物以坚持自我的方式所作的对于人性的守护，从而寄寓了作者的理想。\"},{\"img\":9,\"name\":\"安徒生童话\",\"author\":\"[丹麦]安徒生\",\"publishingHouse\":\"辽宁少年儿童出版社\",\"publishTime\":\"2017-03-01\",\"isbn\":\"9787531569022\",\"location\":\"书架A3第二排\",\"description\":\"《安徒生童话》共由163篇故事组成。该作爱憎分明，热情歌颂劳动人民、赞美他们的善良和纯洁的优秀品德；无情地揭露和批判王公贵族们的愚蠢、无能、贪婪和残暴。其中较为闻名的故事有：《小人鱼》、《丑小鸭》、《卖火柴的小女孩》、《拇指姑娘》等。\"}]";

    public static Map<String, Book> getBooks() {
        Map<String,Book> bookMap = new LinkedHashMap<>();
        List<Book> books = jsonToArrayList(booksJson, Book.class);
        for (Book book : books) {
            bookMap.put(book.getName(),book);
        }
        return bookMap;
    }

    public static <T> ArrayList<T> jsonToArrayList(String json, Class<T> clazz) {
        Type type = new TypeToken<ArrayList<JsonObject>>()
        {}.getType();
        ArrayList<JsonObject> jsonObjects = new Gson().fromJson(json, type);

        ArrayList<T> arrayList = new ArrayList<>();
        for (JsonObject jsonObject : jsonObjects)
        {
            arrayList.add(new Gson().fromJson(jsonObject, clazz));
        }
        return arrayList;
    }
}
